/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/
"use strict";

var $protobuf = require("protobufjs/minimal");

// Common aliases
var $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;

// Exported root namespace
var $root = $protobuf.roots["default"] || ($protobuf.roots["default"] = {});

$root.pb = (function() {

    /**
     * Namespace pb.
     * @exports pb
     * @namespace
     */
    var pb = {};

    pb.DeskInfo = (function() {

        /**
         * Properties of a DeskInfo.
         * @memberof pb
         * @interface IDeskInfo
         * @property {string|null} [deskNo] DeskInfo deskNo
         */

        /**
         * Constructs a new DeskInfo.
         * @memberof pb
         * @classdesc Represents a DeskInfo.
         * @implements IDeskInfo
         * @constructor
         * @param {pb.IDeskInfo=} [properties] Properties to set
         */
        function DeskInfo(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * DeskInfo deskNo.
         * @member {string} deskNo
         * @memberof pb.DeskInfo
         * @instance
         */
        DeskInfo.prototype.deskNo = "";

        /**
         * Creates a new DeskInfo instance using the specified properties.
         * @function create
         * @memberof pb.DeskInfo
         * @static
         * @param {pb.IDeskInfo=} [properties] Properties to set
         * @returns {pb.DeskInfo} DeskInfo instance
         */
        DeskInfo.create = function create(properties) {
            return new DeskInfo(properties);
        };

        /**
         * Encodes the specified DeskInfo message. Does not implicitly {@link pb.DeskInfo.verify|verify} messages.
         * @function encode
         * @memberof pb.DeskInfo
         * @static
         * @param {pb.IDeskInfo} message DeskInfo message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        DeskInfo.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.deskNo != null && Object.hasOwnProperty.call(message, "deskNo"))
                writer.uint32(/* id 1, wireType 2 =*/10).string(message.deskNo);
            return writer;
        };

        /**
         * Encodes the specified DeskInfo message, length delimited. Does not implicitly {@link pb.DeskInfo.verify|verify} messages.
         * @function encodeDelimited
         * @memberof pb.DeskInfo
         * @static
         * @param {pb.IDeskInfo} message DeskInfo message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        DeskInfo.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a DeskInfo message from the specified reader or buffer.
         * @function decode
         * @memberof pb.DeskInfo
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {pb.DeskInfo} DeskInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        DeskInfo.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.pb.DeskInfo();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.deskNo = reader.string();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a DeskInfo message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof pb.DeskInfo
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {pb.DeskInfo} DeskInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        DeskInfo.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a DeskInfo message.
         * @function verify
         * @memberof pb.DeskInfo
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        DeskInfo.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.deskNo != null && message.hasOwnProperty("deskNo"))
                if (!$util.isString(message.deskNo))
                    return "deskNo: string expected";
            return null;
        };

        /**
         * Creates a DeskInfo message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof pb.DeskInfo
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {pb.DeskInfo} DeskInfo
         */
        DeskInfo.fromObject = function fromObject(object) {
            if (object instanceof $root.pb.DeskInfo)
                return object;
            var message = new $root.pb.DeskInfo();
            if (object.deskNo != null)
                message.deskNo = String(object.deskNo);
            return message;
        };

        /**
         * Creates a plain object from a DeskInfo message. Also converts values to other types if specified.
         * @function toObject
         * @memberof pb.DeskInfo
         * @static
         * @param {pb.DeskInfo} message DeskInfo
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        DeskInfo.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults)
                object.deskNo = "";
            if (message.deskNo != null && message.hasOwnProperty("deskNo"))
                object.deskNo = message.deskNo;
            return object;
        };

        /**
         * Converts this DeskInfo to JSON.
         * @function toJSON
         * @memberof pb.DeskInfo
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        DeskInfo.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for DeskInfo
         * @function getTypeUrl
         * @memberof pb.DeskInfo
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        DeskInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/pb.DeskInfo";
        };

        return DeskInfo;
    })();

    pb.gameConfig = (function() {

        /**
         * Properties of a gameConfig.
         * @memberof pb
         * @interface IgameConfig
         * @property {Array.<number>|null} [modelList] gameConfig modelList
         */

        /**
         * Constructs a new gameConfig.
         * @memberof pb
         * @classdesc 1001  活动界面
         * 1002  祈福界面
         * 1003  每日首充界面
         * 1004  福利界面
         * 1005  商城界面
         * 1006  充值界面
         * 1007  招募界面
         * @implements IgameConfig
         * @constructor
         * @param {pb.IgameConfig=} [properties] Properties to set
         */
        function gameConfig(properties) {
            this.modelList = [];
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * gameConfig modelList.
         * @member {Array.<number>} modelList
         * @memberof pb.gameConfig
         * @instance
         */
        gameConfig.prototype.modelList = $util.emptyArray;

        /**
         * Creates a new gameConfig instance using the specified properties.
         * @function create
         * @memberof pb.gameConfig
         * @static
         * @param {pb.IgameConfig=} [properties] Properties to set
         * @returns {pb.gameConfig} gameConfig instance
         */
        gameConfig.create = function create(properties) {
            return new gameConfig(properties);
        };

        /**
         * Encodes the specified gameConfig message. Does not implicitly {@link pb.gameConfig.verify|verify} messages.
         * @function encode
         * @memberof pb.gameConfig
         * @static
         * @param {pb.IgameConfig} message gameConfig message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        gameConfig.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.modelList != null && message.modelList.length) {
                writer.uint32(/* id 1, wireType 2 =*/10).fork();
                for (var i = 0; i < message.modelList.length; ++i)
                    writer.int32(message.modelList[i]);
                writer.ldelim();
            }
            return writer;
        };

        /**
         * Encodes the specified gameConfig message, length delimited. Does not implicitly {@link pb.gameConfig.verify|verify} messages.
         * @function encodeDelimited
         * @memberof pb.gameConfig
         * @static
         * @param {pb.IgameConfig} message gameConfig message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        gameConfig.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a gameConfig message from the specified reader or buffer.
         * @function decode
         * @memberof pb.gameConfig
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {pb.gameConfig} gameConfig
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        gameConfig.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.pb.gameConfig();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        if (!(message.modelList && message.modelList.length))
                            message.modelList = [];
                        if ((tag & 7) === 2) {
                            var end2 = reader.uint32() + reader.pos;
                            while (reader.pos < end2)
                                message.modelList.push(reader.int32());
                        } else
                            message.modelList.push(reader.int32());
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a gameConfig message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof pb.gameConfig
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {pb.gameConfig} gameConfig
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        gameConfig.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a gameConfig message.
         * @function verify
         * @memberof pb.gameConfig
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        gameConfig.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.modelList != null && message.hasOwnProperty("modelList")) {
                if (!Array.isArray(message.modelList))
                    return "modelList: array expected";
                for (var i = 0; i < message.modelList.length; ++i)
                    if (!$util.isInteger(message.modelList[i]))
                        return "modelList: integer[] expected";
            }
            return null;
        };

        /**
         * Creates a gameConfig message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof pb.gameConfig
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {pb.gameConfig} gameConfig
         */
        gameConfig.fromObject = function fromObject(object) {
            if (object instanceof $root.pb.gameConfig)
                return object;
            var message = new $root.pb.gameConfig();
            if (object.modelList) {
                if (!Array.isArray(object.modelList))
                    throw TypeError(".pb.gameConfig.modelList: array expected");
                message.modelList = [];
                for (var i = 0; i < object.modelList.length; ++i)
                    message.modelList[i] = object.modelList[i] | 0;
            }
            return message;
        };

        /**
         * Creates a plain object from a gameConfig message. Also converts values to other types if specified.
         * @function toObject
         * @memberof pb.gameConfig
         * @static
         * @param {pb.gameConfig} message gameConfig
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        gameConfig.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.arrays || options.defaults)
                object.modelList = [];
            if (message.modelList && message.modelList.length) {
                object.modelList = [];
                for (var j = 0; j < message.modelList.length; ++j)
                    object.modelList[j] = message.modelList[j];
            }
            return object;
        };

        /**
         * Converts this gameConfig to JSON.
         * @function toJSON
         * @memberof pb.gameConfig
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        gameConfig.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for gameConfig
         * @function getTypeUrl
         * @memberof pb.gameConfig
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        gameConfig.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/pb.gameConfig";
        };

        return gameConfig;
    })();

    pb.LoginInfo = (function() {

        /**
         * Properties of a LoginInfo.
         * @memberof pb
         * @interface ILoginInfo
         * @property {pb.IPlayerInfo|null} [playerInfo] LoginInfo playerInfo
         * @property {Array.<pb.IPlayerHeroInfo>|null} [playerHeros] LoginInfo playerHeros
         */

        /**
         * Constructs a new LoginInfo.
         * @memberof pb
         * @classdesc Represents a LoginInfo.
         * @implements ILoginInfo
         * @constructor
         * @param {pb.ILoginInfo=} [properties] Properties to set
         */
        function LoginInfo(properties) {
            this.playerHeros = [];
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * LoginInfo playerInfo.
         * @member {pb.IPlayerInfo|null|undefined} playerInfo
         * @memberof pb.LoginInfo
         * @instance
         */
        LoginInfo.prototype.playerInfo = null;

        /**
         * LoginInfo playerHeros.
         * @member {Array.<pb.IPlayerHeroInfo>} playerHeros
         * @memberof pb.LoginInfo
         * @instance
         */
        LoginInfo.prototype.playerHeros = $util.emptyArray;

        /**
         * Creates a new LoginInfo instance using the specified properties.
         * @function create
         * @memberof pb.LoginInfo
         * @static
         * @param {pb.ILoginInfo=} [properties] Properties to set
         * @returns {pb.LoginInfo} LoginInfo instance
         */
        LoginInfo.create = function create(properties) {
            return new LoginInfo(properties);
        };

        /**
         * Encodes the specified LoginInfo message. Does not implicitly {@link pb.LoginInfo.verify|verify} messages.
         * @function encode
         * @memberof pb.LoginInfo
         * @static
         * @param {pb.ILoginInfo} message LoginInfo message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        LoginInfo.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.playerInfo != null && Object.hasOwnProperty.call(message, "playerInfo"))
                $root.pb.PlayerInfo.encode(message.playerInfo, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
            if (message.playerHeros != null && message.playerHeros.length)
                for (var i = 0; i < message.playerHeros.length; ++i)
                    $root.pb.PlayerHeroInfo.encode(message.playerHeros[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
            return writer;
        };

        /**
         * Encodes the specified LoginInfo message, length delimited. Does not implicitly {@link pb.LoginInfo.verify|verify} messages.
         * @function encodeDelimited
         * @memberof pb.LoginInfo
         * @static
         * @param {pb.ILoginInfo} message LoginInfo message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        LoginInfo.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a LoginInfo message from the specified reader or buffer.
         * @function decode
         * @memberof pb.LoginInfo
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {pb.LoginInfo} LoginInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        LoginInfo.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.pb.LoginInfo();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.playerInfo = $root.pb.PlayerInfo.decode(reader, reader.uint32());
                        break;
                    }
                case 2: {
                        if (!(message.playerHeros && message.playerHeros.length))
                            message.playerHeros = [];
                        message.playerHeros.push($root.pb.PlayerHeroInfo.decode(reader, reader.uint32()));
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a LoginInfo message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof pb.LoginInfo
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {pb.LoginInfo} LoginInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        LoginInfo.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a LoginInfo message.
         * @function verify
         * @memberof pb.LoginInfo
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        LoginInfo.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.playerInfo != null && message.hasOwnProperty("playerInfo")) {
                var error = $root.pb.PlayerInfo.verify(message.playerInfo);
                if (error)
                    return "playerInfo." + error;
            }
            if (message.playerHeros != null && message.hasOwnProperty("playerHeros")) {
                if (!Array.isArray(message.playerHeros))
                    return "playerHeros: array expected";
                for (var i = 0; i < message.playerHeros.length; ++i) {
                    var error = $root.pb.PlayerHeroInfo.verify(message.playerHeros[i]);
                    if (error)
                        return "playerHeros." + error;
                }
            }
            return null;
        };

        /**
         * Creates a LoginInfo message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof pb.LoginInfo
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {pb.LoginInfo} LoginInfo
         */
        LoginInfo.fromObject = function fromObject(object) {
            if (object instanceof $root.pb.LoginInfo)
                return object;
            var message = new $root.pb.LoginInfo();
            if (object.playerInfo != null) {
                if (typeof object.playerInfo !== "object")
                    throw TypeError(".pb.LoginInfo.playerInfo: object expected");
                message.playerInfo = $root.pb.PlayerInfo.fromObject(object.playerInfo);
            }
            if (object.playerHeros) {
                if (!Array.isArray(object.playerHeros))
                    throw TypeError(".pb.LoginInfo.playerHeros: array expected");
                message.playerHeros = [];
                for (var i = 0; i < object.playerHeros.length; ++i) {
                    if (typeof object.playerHeros[i] !== "object")
                        throw TypeError(".pb.LoginInfo.playerHeros: object expected");
                    message.playerHeros[i] = $root.pb.PlayerHeroInfo.fromObject(object.playerHeros[i]);
                }
            }
            return message;
        };

        /**
         * Creates a plain object from a LoginInfo message. Also converts values to other types if specified.
         * @function toObject
         * @memberof pb.LoginInfo
         * @static
         * @param {pb.LoginInfo} message LoginInfo
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        LoginInfo.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.arrays || options.defaults)
                object.playerHeros = [];
            if (options.defaults)
                object.playerInfo = null;
            if (message.playerInfo != null && message.hasOwnProperty("playerInfo"))
                object.playerInfo = $root.pb.PlayerInfo.toObject(message.playerInfo, options);
            if (message.playerHeros && message.playerHeros.length) {
                object.playerHeros = [];
                for (var j = 0; j < message.playerHeros.length; ++j)
                    object.playerHeros[j] = $root.pb.PlayerHeroInfo.toObject(message.playerHeros[j], options);
            }
            return object;
        };

        /**
         * Converts this LoginInfo to JSON.
         * @function toJSON
         * @memberof pb.LoginInfo
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        LoginInfo.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for LoginInfo
         * @function getTypeUrl
         * @memberof pb.LoginInfo
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        LoginInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/pb.LoginInfo";
        };

        return LoginInfo;
    })();

    pb.PlayerInfo = (function() {

        /**
         * Properties of a PlayerInfo.
         * @memberof pb
         * @interface IPlayerInfo
         * @property {string|null} [id] PlayerInfo id
         * @property {number|Long|null} [shortId] PlayerInfo shortId
         * @property {string|null} [nickname] PlayerInfo nickname
         * @property {number|null} [usedHeroId] PlayerInfo usedHeroId
         * @property {string|null} [avatar] PlayerInfo avatar
         * @property {number|null} [sex] PlayerInfo sex
         * @property {number|Long|null} [gem] PlayerInfo gem
         * @property {number|Long|null} [ruby] PlayerInfo ruby
         */

        /**
         * Constructs a new PlayerInfo.
         * @memberof pb
         * @classdesc Represents a PlayerInfo.
         * @implements IPlayerInfo
         * @constructor
         * @param {pb.IPlayerInfo=} [properties] Properties to set
         */
        function PlayerInfo(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * PlayerInfo id.
         * @member {string|null|undefined} id
         * @memberof pb.PlayerInfo
         * @instance
         */
        PlayerInfo.prototype.id = null;

        /**
         * PlayerInfo shortId.
         * @member {number|Long|null|undefined} shortId
         * @memberof pb.PlayerInfo
         * @instance
         */
        PlayerInfo.prototype.shortId = null;

        /**
         * PlayerInfo nickname.
         * @member {string|null|undefined} nickname
         * @memberof pb.PlayerInfo
         * @instance
         */
        PlayerInfo.prototype.nickname = null;

        /**
         * PlayerInfo usedHeroId.
         * @member {number|null|undefined} usedHeroId
         * @memberof pb.PlayerInfo
         * @instance
         */
        PlayerInfo.prototype.usedHeroId = null;

        /**
         * PlayerInfo avatar.
         * @member {string|null|undefined} avatar
         * @memberof pb.PlayerInfo
         * @instance
         */
        PlayerInfo.prototype.avatar = null;

        /**
         * PlayerInfo sex.
         * @member {number|null|undefined} sex
         * @memberof pb.PlayerInfo
         * @instance
         */
        PlayerInfo.prototype.sex = null;

        /**
         * PlayerInfo gem.
         * @member {number|Long|null|undefined} gem
         * @memberof pb.PlayerInfo
         * @instance
         */
        PlayerInfo.prototype.gem = null;

        /**
         * PlayerInfo ruby.
         * @member {number|Long|null|undefined} ruby
         * @memberof pb.PlayerInfo
         * @instance
         */
        PlayerInfo.prototype.ruby = null;

        // OneOf field names bound to virtual getters and setters
        var $oneOfFields;

        /**
         * PlayerInfo _id.
         * @member {"id"|undefined} _id
         * @memberof pb.PlayerInfo
         * @instance
         */
        Object.defineProperty(PlayerInfo.prototype, "_id", {
            get: $util.oneOfGetter($oneOfFields = ["id"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * PlayerInfo _shortId.
         * @member {"shortId"|undefined} _shortId
         * @memberof pb.PlayerInfo
         * @instance
         */
        Object.defineProperty(PlayerInfo.prototype, "_shortId", {
            get: $util.oneOfGetter($oneOfFields = ["shortId"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * PlayerInfo _nickname.
         * @member {"nickname"|undefined} _nickname
         * @memberof pb.PlayerInfo
         * @instance
         */
        Object.defineProperty(PlayerInfo.prototype, "_nickname", {
            get: $util.oneOfGetter($oneOfFields = ["nickname"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * PlayerInfo _usedHeroId.
         * @member {"usedHeroId"|undefined} _usedHeroId
         * @memberof pb.PlayerInfo
         * @instance
         */
        Object.defineProperty(PlayerInfo.prototype, "_usedHeroId", {
            get: $util.oneOfGetter($oneOfFields = ["usedHeroId"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * PlayerInfo _avatar.
         * @member {"avatar"|undefined} _avatar
         * @memberof pb.PlayerInfo
         * @instance
         */
        Object.defineProperty(PlayerInfo.prototype, "_avatar", {
            get: $util.oneOfGetter($oneOfFields = ["avatar"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * PlayerInfo _sex.
         * @member {"sex"|undefined} _sex
         * @memberof pb.PlayerInfo
         * @instance
         */
        Object.defineProperty(PlayerInfo.prototype, "_sex", {
            get: $util.oneOfGetter($oneOfFields = ["sex"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * PlayerInfo _gem.
         * @member {"gem"|undefined} _gem
         * @memberof pb.PlayerInfo
         * @instance
         */
        Object.defineProperty(PlayerInfo.prototype, "_gem", {
            get: $util.oneOfGetter($oneOfFields = ["gem"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * PlayerInfo _ruby.
         * @member {"ruby"|undefined} _ruby
         * @memberof pb.PlayerInfo
         * @instance
         */
        Object.defineProperty(PlayerInfo.prototype, "_ruby", {
            get: $util.oneOfGetter($oneOfFields = ["ruby"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * Creates a new PlayerInfo instance using the specified properties.
         * @function create
         * @memberof pb.PlayerInfo
         * @static
         * @param {pb.IPlayerInfo=} [properties] Properties to set
         * @returns {pb.PlayerInfo} PlayerInfo instance
         */
        PlayerInfo.create = function create(properties) {
            return new PlayerInfo(properties);
        };

        /**
         * Encodes the specified PlayerInfo message. Does not implicitly {@link pb.PlayerInfo.verify|verify} messages.
         * @function encode
         * @memberof pb.PlayerInfo
         * @static
         * @param {pb.IPlayerInfo} message PlayerInfo message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        PlayerInfo.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.id != null && Object.hasOwnProperty.call(message, "id"))
                writer.uint32(/* id 1, wireType 2 =*/10).string(message.id);
            if (message.shortId != null && Object.hasOwnProperty.call(message, "shortId"))
                writer.uint32(/* id 2, wireType 0 =*/16).int64(message.shortId);
            if (message.nickname != null && Object.hasOwnProperty.call(message, "nickname"))
                writer.uint32(/* id 3, wireType 2 =*/26).string(message.nickname);
            if (message.usedHeroId != null && Object.hasOwnProperty.call(message, "usedHeroId"))
                writer.uint32(/* id 4, wireType 0 =*/32).int32(message.usedHeroId);
            if (message.avatar != null && Object.hasOwnProperty.call(message, "avatar"))
                writer.uint32(/* id 5, wireType 2 =*/42).string(message.avatar);
            if (message.sex != null && Object.hasOwnProperty.call(message, "sex"))
                writer.uint32(/* id 6, wireType 0 =*/48).int32(message.sex);
            if (message.gem != null && Object.hasOwnProperty.call(message, "gem"))
                writer.uint32(/* id 7, wireType 0 =*/56).int64(message.gem);
            if (message.ruby != null && Object.hasOwnProperty.call(message, "ruby"))
                writer.uint32(/* id 8, wireType 0 =*/64).int64(message.ruby);
            return writer;
        };

        /**
         * Encodes the specified PlayerInfo message, length delimited. Does not implicitly {@link pb.PlayerInfo.verify|verify} messages.
         * @function encodeDelimited
         * @memberof pb.PlayerInfo
         * @static
         * @param {pb.IPlayerInfo} message PlayerInfo message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        PlayerInfo.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a PlayerInfo message from the specified reader or buffer.
         * @function decode
         * @memberof pb.PlayerInfo
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {pb.PlayerInfo} PlayerInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        PlayerInfo.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.pb.PlayerInfo();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.id = reader.string();
                        break;
                    }
                case 2: {
                        message.shortId = reader.int64();
                        break;
                    }
                case 3: {
                        message.nickname = reader.string();
                        break;
                    }
                case 4: {
                        message.usedHeroId = reader.int32();
                        break;
                    }
                case 5: {
                        message.avatar = reader.string();
                        break;
                    }
                case 6: {
                        message.sex = reader.int32();
                        break;
                    }
                case 7: {
                        message.gem = reader.int64();
                        break;
                    }
                case 8: {
                        message.ruby = reader.int64();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a PlayerInfo message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof pb.PlayerInfo
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {pb.PlayerInfo} PlayerInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        PlayerInfo.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a PlayerInfo message.
         * @function verify
         * @memberof pb.PlayerInfo
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        PlayerInfo.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            var properties = {};
            if (message.id != null && message.hasOwnProperty("id")) {
                properties._id = 1;
                if (!$util.isString(message.id))
                    return "id: string expected";
            }
            if (message.shortId != null && message.hasOwnProperty("shortId")) {
                properties._shortId = 1;
                if (!$util.isInteger(message.shortId) && !(message.shortId && $util.isInteger(message.shortId.low) && $util.isInteger(message.shortId.high)))
                    return "shortId: integer|Long expected";
            }
            if (message.nickname != null && message.hasOwnProperty("nickname")) {
                properties._nickname = 1;
                if (!$util.isString(message.nickname))
                    return "nickname: string expected";
            }
            if (message.usedHeroId != null && message.hasOwnProperty("usedHeroId")) {
                properties._usedHeroId = 1;
                if (!$util.isInteger(message.usedHeroId))
                    return "usedHeroId: integer expected";
            }
            if (message.avatar != null && message.hasOwnProperty("avatar")) {
                properties._avatar = 1;
                if (!$util.isString(message.avatar))
                    return "avatar: string expected";
            }
            if (message.sex != null && message.hasOwnProperty("sex")) {
                properties._sex = 1;
                if (!$util.isInteger(message.sex))
                    return "sex: integer expected";
            }
            if (message.gem != null && message.hasOwnProperty("gem")) {
                properties._gem = 1;
                if (!$util.isInteger(message.gem) && !(message.gem && $util.isInteger(message.gem.low) && $util.isInteger(message.gem.high)))
                    return "gem: integer|Long expected";
            }
            if (message.ruby != null && message.hasOwnProperty("ruby")) {
                properties._ruby = 1;
                if (!$util.isInteger(message.ruby) && !(message.ruby && $util.isInteger(message.ruby.low) && $util.isInteger(message.ruby.high)))
                    return "ruby: integer|Long expected";
            }
            return null;
        };

        /**
         * Creates a PlayerInfo message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof pb.PlayerInfo
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {pb.PlayerInfo} PlayerInfo
         */
        PlayerInfo.fromObject = function fromObject(object) {
            if (object instanceof $root.pb.PlayerInfo)
                return object;
            var message = new $root.pb.PlayerInfo();
            if (object.id != null)
                message.id = String(object.id);
            if (object.shortId != null)
                if ($util.Long)
                    (message.shortId = $util.Long.fromValue(object.shortId)).unsigned = false;
                else if (typeof object.shortId === "string")
                    message.shortId = parseInt(object.shortId, 10);
                else if (typeof object.shortId === "number")
                    message.shortId = object.shortId;
                else if (typeof object.shortId === "object")
                    message.shortId = new $util.LongBits(object.shortId.low >>> 0, object.shortId.high >>> 0).toNumber();
            if (object.nickname != null)
                message.nickname = String(object.nickname);
            if (object.usedHeroId != null)
                message.usedHeroId = object.usedHeroId | 0;
            if (object.avatar != null)
                message.avatar = String(object.avatar);
            if (object.sex != null)
                message.sex = object.sex | 0;
            if (object.gem != null)
                if ($util.Long)
                    (message.gem = $util.Long.fromValue(object.gem)).unsigned = false;
                else if (typeof object.gem === "string")
                    message.gem = parseInt(object.gem, 10);
                else if (typeof object.gem === "number")
                    message.gem = object.gem;
                else if (typeof object.gem === "object")
                    message.gem = new $util.LongBits(object.gem.low >>> 0, object.gem.high >>> 0).toNumber();
            if (object.ruby != null)
                if ($util.Long)
                    (message.ruby = $util.Long.fromValue(object.ruby)).unsigned = false;
                else if (typeof object.ruby === "string")
                    message.ruby = parseInt(object.ruby, 10);
                else if (typeof object.ruby === "number")
                    message.ruby = object.ruby;
                else if (typeof object.ruby === "object")
                    message.ruby = new $util.LongBits(object.ruby.low >>> 0, object.ruby.high >>> 0).toNumber();
            return message;
        };

        /**
         * Creates a plain object from a PlayerInfo message. Also converts values to other types if specified.
         * @function toObject
         * @memberof pb.PlayerInfo
         * @static
         * @param {pb.PlayerInfo} message PlayerInfo
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        PlayerInfo.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (message.id != null && message.hasOwnProperty("id")) {
                object.id = message.id;
                if (options.oneofs)
                    object._id = "id";
            }
            if (message.shortId != null && message.hasOwnProperty("shortId")) {
                if (typeof message.shortId === "number")
                    object.shortId = options.longs === String ? String(message.shortId) : message.shortId;
                else
                    object.shortId = options.longs === String ? $util.Long.prototype.toString.call(message.shortId) : options.longs === Number ? new $util.LongBits(message.shortId.low >>> 0, message.shortId.high >>> 0).toNumber() : message.shortId;
                if (options.oneofs)
                    object._shortId = "shortId";
            }
            if (message.nickname != null && message.hasOwnProperty("nickname")) {
                object.nickname = message.nickname;
                if (options.oneofs)
                    object._nickname = "nickname";
            }
            if (message.usedHeroId != null && message.hasOwnProperty("usedHeroId")) {
                object.usedHeroId = message.usedHeroId;
                if (options.oneofs)
                    object._usedHeroId = "usedHeroId";
            }
            if (message.avatar != null && message.hasOwnProperty("avatar")) {
                object.avatar = message.avatar;
                if (options.oneofs)
                    object._avatar = "avatar";
            }
            if (message.sex != null && message.hasOwnProperty("sex")) {
                object.sex = message.sex;
                if (options.oneofs)
                    object._sex = "sex";
            }
            if (message.gem != null && message.hasOwnProperty("gem")) {
                if (typeof message.gem === "number")
                    object.gem = options.longs === String ? String(message.gem) : message.gem;
                else
                    object.gem = options.longs === String ? $util.Long.prototype.toString.call(message.gem) : options.longs === Number ? new $util.LongBits(message.gem.low >>> 0, message.gem.high >>> 0).toNumber() : message.gem;
                if (options.oneofs)
                    object._gem = "gem";
            }
            if (message.ruby != null && message.hasOwnProperty("ruby")) {
                if (typeof message.ruby === "number")
                    object.ruby = options.longs === String ? String(message.ruby) : message.ruby;
                else
                    object.ruby = options.longs === String ? $util.Long.prototype.toString.call(message.ruby) : options.longs === Number ? new $util.LongBits(message.ruby.low >>> 0, message.ruby.high >>> 0).toNumber() : message.ruby;
                if (options.oneofs)
                    object._ruby = "ruby";
            }
            return object;
        };

        /**
         * Converts this PlayerInfo to JSON.
         * @function toJSON
         * @memberof pb.PlayerInfo
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        PlayerInfo.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for PlayerInfo
         * @function getTypeUrl
         * @memberof pb.PlayerInfo
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        PlayerInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/pb.PlayerInfo";
        };

        return PlayerInfo;
    })();

    pb.PlayerHeroInfo = (function() {

        /**
         * Properties of a PlayerHeroInfo.
         * @memberof pb
         * @interface IPlayerHeroInfo
         * @property {number|null} [heroId] PlayerHeroInfo heroId
         * @property {string|null} [heroName] PlayerHeroInfo heroName
         */

        /**
         * Constructs a new PlayerHeroInfo.
         * @memberof pb
         * @classdesc 英雄数据
         * @implements IPlayerHeroInfo
         * @constructor
         * @param {pb.IPlayerHeroInfo=} [properties] Properties to set
         */
        function PlayerHeroInfo(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * PlayerHeroInfo heroId.
         * @member {number} heroId
         * @memberof pb.PlayerHeroInfo
         * @instance
         */
        PlayerHeroInfo.prototype.heroId = 0;

        /**
         * PlayerHeroInfo heroName.
         * @member {string} heroName
         * @memberof pb.PlayerHeroInfo
         * @instance
         */
        PlayerHeroInfo.prototype.heroName = "";

        /**
         * Creates a new PlayerHeroInfo instance using the specified properties.
         * @function create
         * @memberof pb.PlayerHeroInfo
         * @static
         * @param {pb.IPlayerHeroInfo=} [properties] Properties to set
         * @returns {pb.PlayerHeroInfo} PlayerHeroInfo instance
         */
        PlayerHeroInfo.create = function create(properties) {
            return new PlayerHeroInfo(properties);
        };

        /**
         * Encodes the specified PlayerHeroInfo message. Does not implicitly {@link pb.PlayerHeroInfo.verify|verify} messages.
         * @function encode
         * @memberof pb.PlayerHeroInfo
         * @static
         * @param {pb.IPlayerHeroInfo} message PlayerHeroInfo message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        PlayerHeroInfo.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.heroId != null && Object.hasOwnProperty.call(message, "heroId"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.heroId);
            if (message.heroName != null && Object.hasOwnProperty.call(message, "heroName"))
                writer.uint32(/* id 2, wireType 2 =*/18).string(message.heroName);
            return writer;
        };

        /**
         * Encodes the specified PlayerHeroInfo message, length delimited. Does not implicitly {@link pb.PlayerHeroInfo.verify|verify} messages.
         * @function encodeDelimited
         * @memberof pb.PlayerHeroInfo
         * @static
         * @param {pb.IPlayerHeroInfo} message PlayerHeroInfo message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        PlayerHeroInfo.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a PlayerHeroInfo message from the specified reader or buffer.
         * @function decode
         * @memberof pb.PlayerHeroInfo
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {pb.PlayerHeroInfo} PlayerHeroInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        PlayerHeroInfo.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.pb.PlayerHeroInfo();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.heroId = reader.int32();
                        break;
                    }
                case 2: {
                        message.heroName = reader.string();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a PlayerHeroInfo message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof pb.PlayerHeroInfo
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {pb.PlayerHeroInfo} PlayerHeroInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        PlayerHeroInfo.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a PlayerHeroInfo message.
         * @function verify
         * @memberof pb.PlayerHeroInfo
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        PlayerHeroInfo.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.heroId != null && message.hasOwnProperty("heroId"))
                if (!$util.isInteger(message.heroId))
                    return "heroId: integer expected";
            if (message.heroName != null && message.hasOwnProperty("heroName"))
                if (!$util.isString(message.heroName))
                    return "heroName: string expected";
            return null;
        };

        /**
         * Creates a PlayerHeroInfo message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof pb.PlayerHeroInfo
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {pb.PlayerHeroInfo} PlayerHeroInfo
         */
        PlayerHeroInfo.fromObject = function fromObject(object) {
            if (object instanceof $root.pb.PlayerHeroInfo)
                return object;
            var message = new $root.pb.PlayerHeroInfo();
            if (object.heroId != null)
                message.heroId = object.heroId | 0;
            if (object.heroName != null)
                message.heroName = String(object.heroName);
            return message;
        };

        /**
         * Creates a plain object from a PlayerHeroInfo message. Also converts values to other types if specified.
         * @function toObject
         * @memberof pb.PlayerHeroInfo
         * @static
         * @param {pb.PlayerHeroInfo} message PlayerHeroInfo
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        PlayerHeroInfo.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults) {
                object.heroId = 0;
                object.heroName = "";
            }
            if (message.heroId != null && message.hasOwnProperty("heroId"))
                object.heroId = message.heroId;
            if (message.heroName != null && message.hasOwnProperty("heroName"))
                object.heroName = message.heroName;
            return object;
        };

        /**
         * Converts this PlayerHeroInfo to JSON.
         * @function toJSON
         * @memberof pb.PlayerHeroInfo
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        PlayerHeroInfo.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for PlayerHeroInfo
         * @function getTypeUrl
         * @memberof pb.PlayerHeroInfo
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        PlayerHeroInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/pb.PlayerHeroInfo";
        };

        return PlayerHeroInfo;
    })();

    pb.HeroList = (function() {

        /**
         * Properties of a HeroList.
         * @memberof pb
         * @interface IHeroList
         * @property {Array.<pb.IPlayerHeroInfo>|null} [heroList] HeroList heroList
         */

        /**
         * Constructs a new HeroList.
         * @memberof pb
         * @classdesc 已拥有的英雄列表
         * @implements IHeroList
         * @constructor
         * @param {pb.IHeroList=} [properties] Properties to set
         */
        function HeroList(properties) {
            this.heroList = [];
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * HeroList heroList.
         * @member {Array.<pb.IPlayerHeroInfo>} heroList
         * @memberof pb.HeroList
         * @instance
         */
        HeroList.prototype.heroList = $util.emptyArray;

        /**
         * Creates a new HeroList instance using the specified properties.
         * @function create
         * @memberof pb.HeroList
         * @static
         * @param {pb.IHeroList=} [properties] Properties to set
         * @returns {pb.HeroList} HeroList instance
         */
        HeroList.create = function create(properties) {
            return new HeroList(properties);
        };

        /**
         * Encodes the specified HeroList message. Does not implicitly {@link pb.HeroList.verify|verify} messages.
         * @function encode
         * @memberof pb.HeroList
         * @static
         * @param {pb.IHeroList} message HeroList message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        HeroList.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.heroList != null && message.heroList.length)
                for (var i = 0; i < message.heroList.length; ++i)
                    $root.pb.PlayerHeroInfo.encode(message.heroList[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
            return writer;
        };

        /**
         * Encodes the specified HeroList message, length delimited. Does not implicitly {@link pb.HeroList.verify|verify} messages.
         * @function encodeDelimited
         * @memberof pb.HeroList
         * @static
         * @param {pb.IHeroList} message HeroList message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        HeroList.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a HeroList message from the specified reader or buffer.
         * @function decode
         * @memberof pb.HeroList
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {pb.HeroList} HeroList
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        HeroList.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.pb.HeroList();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        if (!(message.heroList && message.heroList.length))
                            message.heroList = [];
                        message.heroList.push($root.pb.PlayerHeroInfo.decode(reader, reader.uint32()));
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a HeroList message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof pb.HeroList
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {pb.HeroList} HeroList
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        HeroList.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a HeroList message.
         * @function verify
         * @memberof pb.HeroList
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        HeroList.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.heroList != null && message.hasOwnProperty("heroList")) {
                if (!Array.isArray(message.heroList))
                    return "heroList: array expected";
                for (var i = 0; i < message.heroList.length; ++i) {
                    var error = $root.pb.PlayerHeroInfo.verify(message.heroList[i]);
                    if (error)
                        return "heroList." + error;
                }
            }
            return null;
        };

        /**
         * Creates a HeroList message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof pb.HeroList
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {pb.HeroList} HeroList
         */
        HeroList.fromObject = function fromObject(object) {
            if (object instanceof $root.pb.HeroList)
                return object;
            var message = new $root.pb.HeroList();
            if (object.heroList) {
                if (!Array.isArray(object.heroList))
                    throw TypeError(".pb.HeroList.heroList: array expected");
                message.heroList = [];
                for (var i = 0; i < object.heroList.length; ++i) {
                    if (typeof object.heroList[i] !== "object")
                        throw TypeError(".pb.HeroList.heroList: object expected");
                    message.heroList[i] = $root.pb.PlayerHeroInfo.fromObject(object.heroList[i]);
                }
            }
            return message;
        };

        /**
         * Creates a plain object from a HeroList message. Also converts values to other types if specified.
         * @function toObject
         * @memberof pb.HeroList
         * @static
         * @param {pb.HeroList} message HeroList
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        HeroList.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.arrays || options.defaults)
                object.heroList = [];
            if (message.heroList && message.heroList.length) {
                object.heroList = [];
                for (var j = 0; j < message.heroList.length; ++j)
                    object.heroList[j] = $root.pb.PlayerHeroInfo.toObject(message.heroList[j], options);
            }
            return object;
        };

        /**
         * Converts this HeroList to JSON.
         * @function toJSON
         * @memberof pb.HeroList
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        HeroList.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for HeroList
         * @function getTypeUrl
         * @memberof pb.HeroList
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        HeroList.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/pb.HeroList";
        };

        return HeroList;
    })();

    pb.PlayerLoginReq = (function() {

        /**
         * Properties of a PlayerLoginReq.
         * @memberof pb
         * @interface IPlayerLoginReq
         * @property {pb.LoginType|null} [loginType] PlayerLoginReq loginType
         * @property {string|null} [platform] PlayerLoginReq platform
         * @property {string|null} [code] PlayerLoginReq code
         * @property {string|null} [touristId] PlayerLoginReq touristId
         */

        /**
         * Constructs a new PlayerLoginReq.
         * @memberof pb
         * @classdesc Represents a PlayerLoginReq.
         * @implements IPlayerLoginReq
         * @constructor
         * @param {pb.IPlayerLoginReq=} [properties] Properties to set
         */
        function PlayerLoginReq(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * PlayerLoginReq loginType.
         * @member {pb.LoginType} loginType
         * @memberof pb.PlayerLoginReq
         * @instance
         */
        PlayerLoginReq.prototype.loginType = 0;

        /**
         * PlayerLoginReq platform.
         * @member {string} platform
         * @memberof pb.PlayerLoginReq
         * @instance
         */
        PlayerLoginReq.prototype.platform = "";

        /**
         * PlayerLoginReq code.
         * @member {string|null|undefined} code
         * @memberof pb.PlayerLoginReq
         * @instance
         */
        PlayerLoginReq.prototype.code = null;

        /**
         * PlayerLoginReq touristId.
         * @member {string|null|undefined} touristId
         * @memberof pb.PlayerLoginReq
         * @instance
         */
        PlayerLoginReq.prototype.touristId = null;

        // OneOf field names bound to virtual getters and setters
        var $oneOfFields;

        /**
         * PlayerLoginReq _code.
         * @member {"code"|undefined} _code
         * @memberof pb.PlayerLoginReq
         * @instance
         */
        Object.defineProperty(PlayerLoginReq.prototype, "_code", {
            get: $util.oneOfGetter($oneOfFields = ["code"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * PlayerLoginReq _touristId.
         * @member {"touristId"|undefined} _touristId
         * @memberof pb.PlayerLoginReq
         * @instance
         */
        Object.defineProperty(PlayerLoginReq.prototype, "_touristId", {
            get: $util.oneOfGetter($oneOfFields = ["touristId"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * Creates a new PlayerLoginReq instance using the specified properties.
         * @function create
         * @memberof pb.PlayerLoginReq
         * @static
         * @param {pb.IPlayerLoginReq=} [properties] Properties to set
         * @returns {pb.PlayerLoginReq} PlayerLoginReq instance
         */
        PlayerLoginReq.create = function create(properties) {
            return new PlayerLoginReq(properties);
        };

        /**
         * Encodes the specified PlayerLoginReq message. Does not implicitly {@link pb.PlayerLoginReq.verify|verify} messages.
         * @function encode
         * @memberof pb.PlayerLoginReq
         * @static
         * @param {pb.IPlayerLoginReq} message PlayerLoginReq message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        PlayerLoginReq.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.loginType != null && Object.hasOwnProperty.call(message, "loginType"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.loginType);
            if (message.platform != null && Object.hasOwnProperty.call(message, "platform"))
                writer.uint32(/* id 2, wireType 2 =*/18).string(message.platform);
            if (message.code != null && Object.hasOwnProperty.call(message, "code"))
                writer.uint32(/* id 3, wireType 2 =*/26).string(message.code);
            if (message.touristId != null && Object.hasOwnProperty.call(message, "touristId"))
                writer.uint32(/* id 4, wireType 2 =*/34).string(message.touristId);
            return writer;
        };

        /**
         * Encodes the specified PlayerLoginReq message, length delimited. Does not implicitly {@link pb.PlayerLoginReq.verify|verify} messages.
         * @function encodeDelimited
         * @memberof pb.PlayerLoginReq
         * @static
         * @param {pb.IPlayerLoginReq} message PlayerLoginReq message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        PlayerLoginReq.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a PlayerLoginReq message from the specified reader or buffer.
         * @function decode
         * @memberof pb.PlayerLoginReq
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {pb.PlayerLoginReq} PlayerLoginReq
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        PlayerLoginReq.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.pb.PlayerLoginReq();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.loginType = reader.int32();
                        break;
                    }
                case 2: {
                        message.platform = reader.string();
                        break;
                    }
                case 3: {
                        message.code = reader.string();
                        break;
                    }
                case 4: {
                        message.touristId = reader.string();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a PlayerLoginReq message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof pb.PlayerLoginReq
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {pb.PlayerLoginReq} PlayerLoginReq
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        PlayerLoginReq.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a PlayerLoginReq message.
         * @function verify
         * @memberof pb.PlayerLoginReq
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        PlayerLoginReq.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            var properties = {};
            if (message.loginType != null && message.hasOwnProperty("loginType"))
                switch (message.loginType) {
                default:
                    return "loginType: enum value expected";
                case 0:
                case 1:
                case 2:
                case 3:
                    break;
                }
            if (message.platform != null && message.hasOwnProperty("platform"))
                if (!$util.isString(message.platform))
                    return "platform: string expected";
            if (message.code != null && message.hasOwnProperty("code")) {
                properties._code = 1;
                if (!$util.isString(message.code))
                    return "code: string expected";
            }
            if (message.touristId != null && message.hasOwnProperty("touristId")) {
                properties._touristId = 1;
                if (!$util.isString(message.touristId))
                    return "touristId: string expected";
            }
            return null;
        };

        /**
         * Creates a PlayerLoginReq message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof pb.PlayerLoginReq
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {pb.PlayerLoginReq} PlayerLoginReq
         */
        PlayerLoginReq.fromObject = function fromObject(object) {
            if (object instanceof $root.pb.PlayerLoginReq)
                return object;
            var message = new $root.pb.PlayerLoginReq();
            switch (object.loginType) {
            default:
                if (typeof object.loginType === "number") {
                    message.loginType = object.loginType;
                    break;
                }
                break;
            case "Unknown":
            case 0:
                message.loginType = 0;
                break;
            case "Tourist":
            case 1:
                message.loginType = 1;
                break;
            case "MiniApp":
            case 2:
                message.loginType = 2;
                break;
            case "Phone":
            case 3:
                message.loginType = 3;
                break;
            }
            if (object.platform != null)
                message.platform = String(object.platform);
            if (object.code != null)
                message.code = String(object.code);
            if (object.touristId != null)
                message.touristId = String(object.touristId);
            return message;
        };

        /**
         * Creates a plain object from a PlayerLoginReq message. Also converts values to other types if specified.
         * @function toObject
         * @memberof pb.PlayerLoginReq
         * @static
         * @param {pb.PlayerLoginReq} message PlayerLoginReq
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        PlayerLoginReq.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults) {
                object.loginType = options.enums === String ? "Unknown" : 0;
                object.platform = "";
            }
            if (message.loginType != null && message.hasOwnProperty("loginType"))
                object.loginType = options.enums === String ? $root.pb.LoginType[message.loginType] === undefined ? message.loginType : $root.pb.LoginType[message.loginType] : message.loginType;
            if (message.platform != null && message.hasOwnProperty("platform"))
                object.platform = message.platform;
            if (message.code != null && message.hasOwnProperty("code")) {
                object.code = message.code;
                if (options.oneofs)
                    object._code = "code";
            }
            if (message.touristId != null && message.hasOwnProperty("touristId")) {
                object.touristId = message.touristId;
                if (options.oneofs)
                    object._touristId = "touristId";
            }
            return object;
        };

        /**
         * Converts this PlayerLoginReq to JSON.
         * @function toJSON
         * @memberof pb.PlayerLoginReq
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        PlayerLoginReq.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for PlayerLoginReq
         * @function getTypeUrl
         * @memberof pb.PlayerLoginReq
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        PlayerLoginReq.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/pb.PlayerLoginReq";
        };

        return PlayerLoginReq;
    })();

    /**
     * LoginType enum.
     * @name pb.LoginType
     * @enum {number}
     * @property {number} Unknown=0 Unknown value
     * @property {number} Tourist=1 Tourist value
     * @property {number} MiniApp=2 MiniApp value
     * @property {number} Phone=3 Phone value
     */
    pb.LoginType = (function() {
        var valuesById = {}, values = Object.create(valuesById);
        values[valuesById[0] = "Unknown"] = 0;
        values[valuesById[1] = "Tourist"] = 1;
        values[valuesById[2] = "MiniApp"] = 2;
        values[valuesById[3] = "Phone"] = 3;
        return values;
    })();

    pb.PlayerLoginResp = (function() {

        /**
         * Properties of a PlayerLoginResp.
         * @memberof pb
         * @interface IPlayerLoginResp
         * @property {number|null} [code] PlayerLoginResp code
         * @property {pb.ILoginInfo|null} [data] PlayerLoginResp data
         */

        /**
         * Constructs a new PlayerLoginResp.
         * @memberof pb
         * @classdesc Represents a PlayerLoginResp.
         * @implements IPlayerLoginResp
         * @constructor
         * @param {pb.IPlayerLoginResp=} [properties] Properties to set
         */
        function PlayerLoginResp(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * PlayerLoginResp code.
         * @member {number} code
         * @memberof pb.PlayerLoginResp
         * @instance
         */
        PlayerLoginResp.prototype.code = 0;

        /**
         * PlayerLoginResp data.
         * @member {pb.ILoginInfo|null|undefined} data
         * @memberof pb.PlayerLoginResp
         * @instance
         */
        PlayerLoginResp.prototype.data = null;

        // OneOf field names bound to virtual getters and setters
        var $oneOfFields;

        /**
         * PlayerLoginResp _data.
         * @member {"data"|undefined} _data
         * @memberof pb.PlayerLoginResp
         * @instance
         */
        Object.defineProperty(PlayerLoginResp.prototype, "_data", {
            get: $util.oneOfGetter($oneOfFields = ["data"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * Creates a new PlayerLoginResp instance using the specified properties.
         * @function create
         * @memberof pb.PlayerLoginResp
         * @static
         * @param {pb.IPlayerLoginResp=} [properties] Properties to set
         * @returns {pb.PlayerLoginResp} PlayerLoginResp instance
         */
        PlayerLoginResp.create = function create(properties) {
            return new PlayerLoginResp(properties);
        };

        /**
         * Encodes the specified PlayerLoginResp message. Does not implicitly {@link pb.PlayerLoginResp.verify|verify} messages.
         * @function encode
         * @memberof pb.PlayerLoginResp
         * @static
         * @param {pb.IPlayerLoginResp} message PlayerLoginResp message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        PlayerLoginResp.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.code != null && Object.hasOwnProperty.call(message, "code"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.code);
            if (message.data != null && Object.hasOwnProperty.call(message, "data"))
                $root.pb.LoginInfo.encode(message.data, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
            return writer;
        };

        /**
         * Encodes the specified PlayerLoginResp message, length delimited. Does not implicitly {@link pb.PlayerLoginResp.verify|verify} messages.
         * @function encodeDelimited
         * @memberof pb.PlayerLoginResp
         * @static
         * @param {pb.IPlayerLoginResp} message PlayerLoginResp message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        PlayerLoginResp.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a PlayerLoginResp message from the specified reader or buffer.
         * @function decode
         * @memberof pb.PlayerLoginResp
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {pb.PlayerLoginResp} PlayerLoginResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        PlayerLoginResp.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.pb.PlayerLoginResp();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.code = reader.int32();
                        break;
                    }
                case 2: {
                        message.data = $root.pb.LoginInfo.decode(reader, reader.uint32());
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a PlayerLoginResp message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof pb.PlayerLoginResp
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {pb.PlayerLoginResp} PlayerLoginResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        PlayerLoginResp.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a PlayerLoginResp message.
         * @function verify
         * @memberof pb.PlayerLoginResp
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        PlayerLoginResp.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            var properties = {};
            if (message.code != null && message.hasOwnProperty("code"))
                if (!$util.isInteger(message.code))
                    return "code: integer expected";
            if (message.data != null && message.hasOwnProperty("data")) {
                properties._data = 1;
                {
                    var error = $root.pb.LoginInfo.verify(message.data);
                    if (error)
                        return "data." + error;
                }
            }
            return null;
        };

        /**
         * Creates a PlayerLoginResp message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof pb.PlayerLoginResp
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {pb.PlayerLoginResp} PlayerLoginResp
         */
        PlayerLoginResp.fromObject = function fromObject(object) {
            if (object instanceof $root.pb.PlayerLoginResp)
                return object;
            var message = new $root.pb.PlayerLoginResp();
            if (object.code != null)
                message.code = object.code | 0;
            if (object.data != null) {
                if (typeof object.data !== "object")
                    throw TypeError(".pb.PlayerLoginResp.data: object expected");
                message.data = $root.pb.LoginInfo.fromObject(object.data);
            }
            return message;
        };

        /**
         * Creates a plain object from a PlayerLoginResp message. Also converts values to other types if specified.
         * @function toObject
         * @memberof pb.PlayerLoginResp
         * @static
         * @param {pb.PlayerLoginResp} message PlayerLoginResp
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        PlayerLoginResp.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults)
                object.code = 0;
            if (message.code != null && message.hasOwnProperty("code"))
                object.code = message.code;
            if (message.data != null && message.hasOwnProperty("data")) {
                object.data = $root.pb.LoginInfo.toObject(message.data, options);
                if (options.oneofs)
                    object._data = "data";
            }
            return object;
        };

        /**
         * Converts this PlayerLoginResp to JSON.
         * @function toJSON
         * @memberof pb.PlayerLoginResp
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        PlayerLoginResp.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for PlayerLoginResp
         * @function getTypeUrl
         * @memberof pb.PlayerLoginResp
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        PlayerLoginResp.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/pb.PlayerLoginResp";
        };

        return PlayerLoginResp;
    })();

    pb.PlayerUpdateUserInfoReq = (function() {

        /**
         * Properties of a PlayerUpdateUserInfoReq.
         * @memberof pb
         * @interface IPlayerUpdateUserInfoReq
         * @property {pb.IPlayerInfo|null} [data] PlayerUpdateUserInfoReq data
         */

        /**
         * Constructs a new PlayerUpdateUserInfoReq.
         * @memberof pb
         * @classdesc Represents a PlayerUpdateUserInfoReq.
         * @implements IPlayerUpdateUserInfoReq
         * @constructor
         * @param {pb.IPlayerUpdateUserInfoReq=} [properties] Properties to set
         */
        function PlayerUpdateUserInfoReq(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * PlayerUpdateUserInfoReq data.
         * @member {pb.IPlayerInfo|null|undefined} data
         * @memberof pb.PlayerUpdateUserInfoReq
         * @instance
         */
        PlayerUpdateUserInfoReq.prototype.data = null;

        /**
         * Creates a new PlayerUpdateUserInfoReq instance using the specified properties.
         * @function create
         * @memberof pb.PlayerUpdateUserInfoReq
         * @static
         * @param {pb.IPlayerUpdateUserInfoReq=} [properties] Properties to set
         * @returns {pb.PlayerUpdateUserInfoReq} PlayerUpdateUserInfoReq instance
         */
        PlayerUpdateUserInfoReq.create = function create(properties) {
            return new PlayerUpdateUserInfoReq(properties);
        };

        /**
         * Encodes the specified PlayerUpdateUserInfoReq message. Does not implicitly {@link pb.PlayerUpdateUserInfoReq.verify|verify} messages.
         * @function encode
         * @memberof pb.PlayerUpdateUserInfoReq
         * @static
         * @param {pb.IPlayerUpdateUserInfoReq} message PlayerUpdateUserInfoReq message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        PlayerUpdateUserInfoReq.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.data != null && Object.hasOwnProperty.call(message, "data"))
                $root.pb.PlayerInfo.encode(message.data, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
            return writer;
        };

        /**
         * Encodes the specified PlayerUpdateUserInfoReq message, length delimited. Does not implicitly {@link pb.PlayerUpdateUserInfoReq.verify|verify} messages.
         * @function encodeDelimited
         * @memberof pb.PlayerUpdateUserInfoReq
         * @static
         * @param {pb.IPlayerUpdateUserInfoReq} message PlayerUpdateUserInfoReq message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        PlayerUpdateUserInfoReq.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a PlayerUpdateUserInfoReq message from the specified reader or buffer.
         * @function decode
         * @memberof pb.PlayerUpdateUserInfoReq
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {pb.PlayerUpdateUserInfoReq} PlayerUpdateUserInfoReq
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        PlayerUpdateUserInfoReq.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.pb.PlayerUpdateUserInfoReq();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.data = $root.pb.PlayerInfo.decode(reader, reader.uint32());
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a PlayerUpdateUserInfoReq message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof pb.PlayerUpdateUserInfoReq
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {pb.PlayerUpdateUserInfoReq} PlayerUpdateUserInfoReq
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        PlayerUpdateUserInfoReq.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a PlayerUpdateUserInfoReq message.
         * @function verify
         * @memberof pb.PlayerUpdateUserInfoReq
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        PlayerUpdateUserInfoReq.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.data != null && message.hasOwnProperty("data")) {
                var error = $root.pb.PlayerInfo.verify(message.data);
                if (error)
                    return "data." + error;
            }
            return null;
        };

        /**
         * Creates a PlayerUpdateUserInfoReq message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof pb.PlayerUpdateUserInfoReq
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {pb.PlayerUpdateUserInfoReq} PlayerUpdateUserInfoReq
         */
        PlayerUpdateUserInfoReq.fromObject = function fromObject(object) {
            if (object instanceof $root.pb.PlayerUpdateUserInfoReq)
                return object;
            var message = new $root.pb.PlayerUpdateUserInfoReq();
            if (object.data != null) {
                if (typeof object.data !== "object")
                    throw TypeError(".pb.PlayerUpdateUserInfoReq.data: object expected");
                message.data = $root.pb.PlayerInfo.fromObject(object.data);
            }
            return message;
        };

        /**
         * Creates a plain object from a PlayerUpdateUserInfoReq message. Also converts values to other types if specified.
         * @function toObject
         * @memberof pb.PlayerUpdateUserInfoReq
         * @static
         * @param {pb.PlayerUpdateUserInfoReq} message PlayerUpdateUserInfoReq
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        PlayerUpdateUserInfoReq.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults)
                object.data = null;
            if (message.data != null && message.hasOwnProperty("data"))
                object.data = $root.pb.PlayerInfo.toObject(message.data, options);
            return object;
        };

        /**
         * Converts this PlayerUpdateUserInfoReq to JSON.
         * @function toJSON
         * @memberof pb.PlayerUpdateUserInfoReq
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        PlayerUpdateUserInfoReq.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for PlayerUpdateUserInfoReq
         * @function getTypeUrl
         * @memberof pb.PlayerUpdateUserInfoReq
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        PlayerUpdateUserInfoReq.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/pb.PlayerUpdateUserInfoReq";
        };

        return PlayerUpdateUserInfoReq;
    })();

    pb.PlayerUpdateUserInfoResp = (function() {

        /**
         * Properties of a PlayerUpdateUserInfoResp.
         * @memberof pb
         * @interface IPlayerUpdateUserInfoResp
         * @property {number|null} [code] PlayerUpdateUserInfoResp code
         * @property {pb.IPlayerInfo|null} [data] PlayerUpdateUserInfoResp data
         */

        /**
         * Constructs a new PlayerUpdateUserInfoResp.
         * @memberof pb
         * @classdesc Represents a PlayerUpdateUserInfoResp.
         * @implements IPlayerUpdateUserInfoResp
         * @constructor
         * @param {pb.IPlayerUpdateUserInfoResp=} [properties] Properties to set
         */
        function PlayerUpdateUserInfoResp(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * PlayerUpdateUserInfoResp code.
         * @member {number} code
         * @memberof pb.PlayerUpdateUserInfoResp
         * @instance
         */
        PlayerUpdateUserInfoResp.prototype.code = 0;

        /**
         * PlayerUpdateUserInfoResp data.
         * @member {pb.IPlayerInfo|null|undefined} data
         * @memberof pb.PlayerUpdateUserInfoResp
         * @instance
         */
        PlayerUpdateUserInfoResp.prototype.data = null;

        /**
         * Creates a new PlayerUpdateUserInfoResp instance using the specified properties.
         * @function create
         * @memberof pb.PlayerUpdateUserInfoResp
         * @static
         * @param {pb.IPlayerUpdateUserInfoResp=} [properties] Properties to set
         * @returns {pb.PlayerUpdateUserInfoResp} PlayerUpdateUserInfoResp instance
         */
        PlayerUpdateUserInfoResp.create = function create(properties) {
            return new PlayerUpdateUserInfoResp(properties);
        };

        /**
         * Encodes the specified PlayerUpdateUserInfoResp message. Does not implicitly {@link pb.PlayerUpdateUserInfoResp.verify|verify} messages.
         * @function encode
         * @memberof pb.PlayerUpdateUserInfoResp
         * @static
         * @param {pb.IPlayerUpdateUserInfoResp} message PlayerUpdateUserInfoResp message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        PlayerUpdateUserInfoResp.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.code != null && Object.hasOwnProperty.call(message, "code"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.code);
            if (message.data != null && Object.hasOwnProperty.call(message, "data"))
                $root.pb.PlayerInfo.encode(message.data, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
            return writer;
        };

        /**
         * Encodes the specified PlayerUpdateUserInfoResp message, length delimited. Does not implicitly {@link pb.PlayerUpdateUserInfoResp.verify|verify} messages.
         * @function encodeDelimited
         * @memberof pb.PlayerUpdateUserInfoResp
         * @static
         * @param {pb.IPlayerUpdateUserInfoResp} message PlayerUpdateUserInfoResp message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        PlayerUpdateUserInfoResp.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a PlayerUpdateUserInfoResp message from the specified reader or buffer.
         * @function decode
         * @memberof pb.PlayerUpdateUserInfoResp
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {pb.PlayerUpdateUserInfoResp} PlayerUpdateUserInfoResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        PlayerUpdateUserInfoResp.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.pb.PlayerUpdateUserInfoResp();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.code = reader.int32();
                        break;
                    }
                case 2: {
                        message.data = $root.pb.PlayerInfo.decode(reader, reader.uint32());
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a PlayerUpdateUserInfoResp message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof pb.PlayerUpdateUserInfoResp
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {pb.PlayerUpdateUserInfoResp} PlayerUpdateUserInfoResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        PlayerUpdateUserInfoResp.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a PlayerUpdateUserInfoResp message.
         * @function verify
         * @memberof pb.PlayerUpdateUserInfoResp
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        PlayerUpdateUserInfoResp.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.code != null && message.hasOwnProperty("code"))
                if (!$util.isInteger(message.code))
                    return "code: integer expected";
            if (message.data != null && message.hasOwnProperty("data")) {
                var error = $root.pb.PlayerInfo.verify(message.data);
                if (error)
                    return "data." + error;
            }
            return null;
        };

        /**
         * Creates a PlayerUpdateUserInfoResp message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof pb.PlayerUpdateUserInfoResp
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {pb.PlayerUpdateUserInfoResp} PlayerUpdateUserInfoResp
         */
        PlayerUpdateUserInfoResp.fromObject = function fromObject(object) {
            if (object instanceof $root.pb.PlayerUpdateUserInfoResp)
                return object;
            var message = new $root.pb.PlayerUpdateUserInfoResp();
            if (object.code != null)
                message.code = object.code | 0;
            if (object.data != null) {
                if (typeof object.data !== "object")
                    throw TypeError(".pb.PlayerUpdateUserInfoResp.data: object expected");
                message.data = $root.pb.PlayerInfo.fromObject(object.data);
            }
            return message;
        };

        /**
         * Creates a plain object from a PlayerUpdateUserInfoResp message. Also converts values to other types if specified.
         * @function toObject
         * @memberof pb.PlayerUpdateUserInfoResp
         * @static
         * @param {pb.PlayerUpdateUserInfoResp} message PlayerUpdateUserInfoResp
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        PlayerUpdateUserInfoResp.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults) {
                object.code = 0;
                object.data = null;
            }
            if (message.code != null && message.hasOwnProperty("code"))
                object.code = message.code;
            if (message.data != null && message.hasOwnProperty("data"))
                object.data = $root.pb.PlayerInfo.toObject(message.data, options);
            return object;
        };

        /**
         * Converts this PlayerUpdateUserInfoResp to JSON.
         * @function toJSON
         * @memberof pb.PlayerUpdateUserInfoResp
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        PlayerUpdateUserInfoResp.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for PlayerUpdateUserInfoResp
         * @function getTypeUrl
         * @memberof pb.PlayerUpdateUserInfoResp
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        PlayerUpdateUserInfoResp.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/pb.PlayerUpdateUserInfoResp";
        };

        return PlayerUpdateUserInfoResp;
    })();

    pb.XlmjCreateDeskReq = (function() {

        /**
         * Properties of a XlmjCreateDeskReq.
         * @memberof pb
         * @interface IXlmjCreateDeskReq
         * @property {number|null} [playerCount] XlmjCreateDeskReq playerCount
         * @property {number|null} [totalRound] XlmjCreateDeskReq totalRound
         * @property {boolean|null} [isPrivate] XlmjCreateDeskReq isPrivate
         * @property {boolean|null} [isClub] XlmjCreateDeskReq isClub
         */

        /**
         * Constructs a new XlmjCreateDeskReq.
         * @memberof pb
         * @classdesc Represents a XlmjCreateDeskReq.
         * @implements IXlmjCreateDeskReq
         * @constructor
         * @param {pb.IXlmjCreateDeskReq=} [properties] Properties to set
         */
        function XlmjCreateDeskReq(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * XlmjCreateDeskReq playerCount.
         * @member {number} playerCount
         * @memberof pb.XlmjCreateDeskReq
         * @instance
         */
        XlmjCreateDeskReq.prototype.playerCount = 0;

        /**
         * XlmjCreateDeskReq totalRound.
         * @member {number} totalRound
         * @memberof pb.XlmjCreateDeskReq
         * @instance
         */
        XlmjCreateDeskReq.prototype.totalRound = 0;

        /**
         * XlmjCreateDeskReq isPrivate.
         * @member {boolean} isPrivate
         * @memberof pb.XlmjCreateDeskReq
         * @instance
         */
        XlmjCreateDeskReq.prototype.isPrivate = false;

        /**
         * XlmjCreateDeskReq isClub.
         * @member {boolean} isClub
         * @memberof pb.XlmjCreateDeskReq
         * @instance
         */
        XlmjCreateDeskReq.prototype.isClub = false;

        /**
         * Creates a new XlmjCreateDeskReq instance using the specified properties.
         * @function create
         * @memberof pb.XlmjCreateDeskReq
         * @static
         * @param {pb.IXlmjCreateDeskReq=} [properties] Properties to set
         * @returns {pb.XlmjCreateDeskReq} XlmjCreateDeskReq instance
         */
        XlmjCreateDeskReq.create = function create(properties) {
            return new XlmjCreateDeskReq(properties);
        };

        /**
         * Encodes the specified XlmjCreateDeskReq message. Does not implicitly {@link pb.XlmjCreateDeskReq.verify|verify} messages.
         * @function encode
         * @memberof pb.XlmjCreateDeskReq
         * @static
         * @param {pb.IXlmjCreateDeskReq} message XlmjCreateDeskReq message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        XlmjCreateDeskReq.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.playerCount != null && Object.hasOwnProperty.call(message, "playerCount"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.playerCount);
            if (message.totalRound != null && Object.hasOwnProperty.call(message, "totalRound"))
                writer.uint32(/* id 2, wireType 0 =*/16).int32(message.totalRound);
            if (message.isPrivate != null && Object.hasOwnProperty.call(message, "isPrivate"))
                writer.uint32(/* id 3, wireType 0 =*/24).bool(message.isPrivate);
            if (message.isClub != null && Object.hasOwnProperty.call(message, "isClub"))
                writer.uint32(/* id 4, wireType 0 =*/32).bool(message.isClub);
            return writer;
        };

        /**
         * Encodes the specified XlmjCreateDeskReq message, length delimited. Does not implicitly {@link pb.XlmjCreateDeskReq.verify|verify} messages.
         * @function encodeDelimited
         * @memberof pb.XlmjCreateDeskReq
         * @static
         * @param {pb.IXlmjCreateDeskReq} message XlmjCreateDeskReq message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        XlmjCreateDeskReq.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a XlmjCreateDeskReq message from the specified reader or buffer.
         * @function decode
         * @memberof pb.XlmjCreateDeskReq
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {pb.XlmjCreateDeskReq} XlmjCreateDeskReq
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        XlmjCreateDeskReq.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.pb.XlmjCreateDeskReq();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.playerCount = reader.int32();
                        break;
                    }
                case 2: {
                        message.totalRound = reader.int32();
                        break;
                    }
                case 3: {
                        message.isPrivate = reader.bool();
                        break;
                    }
                case 4: {
                        message.isClub = reader.bool();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a XlmjCreateDeskReq message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof pb.XlmjCreateDeskReq
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {pb.XlmjCreateDeskReq} XlmjCreateDeskReq
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        XlmjCreateDeskReq.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a XlmjCreateDeskReq message.
         * @function verify
         * @memberof pb.XlmjCreateDeskReq
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        XlmjCreateDeskReq.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.playerCount != null && message.hasOwnProperty("playerCount"))
                if (!$util.isInteger(message.playerCount))
                    return "playerCount: integer expected";
            if (message.totalRound != null && message.hasOwnProperty("totalRound"))
                if (!$util.isInteger(message.totalRound))
                    return "totalRound: integer expected";
            if (message.isPrivate != null && message.hasOwnProperty("isPrivate"))
                if (typeof message.isPrivate !== "boolean")
                    return "isPrivate: boolean expected";
            if (message.isClub != null && message.hasOwnProperty("isClub"))
                if (typeof message.isClub !== "boolean")
                    return "isClub: boolean expected";
            return null;
        };

        /**
         * Creates a XlmjCreateDeskReq message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof pb.XlmjCreateDeskReq
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {pb.XlmjCreateDeskReq} XlmjCreateDeskReq
         */
        XlmjCreateDeskReq.fromObject = function fromObject(object) {
            if (object instanceof $root.pb.XlmjCreateDeskReq)
                return object;
            var message = new $root.pb.XlmjCreateDeskReq();
            if (object.playerCount != null)
                message.playerCount = object.playerCount | 0;
            if (object.totalRound != null)
                message.totalRound = object.totalRound | 0;
            if (object.isPrivate != null)
                message.isPrivate = Boolean(object.isPrivate);
            if (object.isClub != null)
                message.isClub = Boolean(object.isClub);
            return message;
        };

        /**
         * Creates a plain object from a XlmjCreateDeskReq message. Also converts values to other types if specified.
         * @function toObject
         * @memberof pb.XlmjCreateDeskReq
         * @static
         * @param {pb.XlmjCreateDeskReq} message XlmjCreateDeskReq
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        XlmjCreateDeskReq.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults) {
                object.playerCount = 0;
                object.totalRound = 0;
                object.isPrivate = false;
                object.isClub = false;
            }
            if (message.playerCount != null && message.hasOwnProperty("playerCount"))
                object.playerCount = message.playerCount;
            if (message.totalRound != null && message.hasOwnProperty("totalRound"))
                object.totalRound = message.totalRound;
            if (message.isPrivate != null && message.hasOwnProperty("isPrivate"))
                object.isPrivate = message.isPrivate;
            if (message.isClub != null && message.hasOwnProperty("isClub"))
                object.isClub = message.isClub;
            return object;
        };

        /**
         * Converts this XlmjCreateDeskReq to JSON.
         * @function toJSON
         * @memberof pb.XlmjCreateDeskReq
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        XlmjCreateDeskReq.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for XlmjCreateDeskReq
         * @function getTypeUrl
         * @memberof pb.XlmjCreateDeskReq
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        XlmjCreateDeskReq.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/pb.XlmjCreateDeskReq";
        };

        return XlmjCreateDeskReq;
    })();

    pb.XlmjCreateDeskResp = (function() {

        /**
         * Properties of a XlmjCreateDeskResp.
         * @memberof pb
         * @interface IXlmjCreateDeskResp
         * @property {number|null} [code] XlmjCreateDeskResp code
         * @property {pb.IDeskInfo|null} [data] XlmjCreateDeskResp data
         */

        /**
         * Constructs a new XlmjCreateDeskResp.
         * @memberof pb
         * @classdesc Represents a XlmjCreateDeskResp.
         * @implements IXlmjCreateDeskResp
         * @constructor
         * @param {pb.IXlmjCreateDeskResp=} [properties] Properties to set
         */
        function XlmjCreateDeskResp(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * XlmjCreateDeskResp code.
         * @member {number} code
         * @memberof pb.XlmjCreateDeskResp
         * @instance
         */
        XlmjCreateDeskResp.prototype.code = 0;

        /**
         * XlmjCreateDeskResp data.
         * @member {pb.IDeskInfo|null|undefined} data
         * @memberof pb.XlmjCreateDeskResp
         * @instance
         */
        XlmjCreateDeskResp.prototype.data = null;

        // OneOf field names bound to virtual getters and setters
        var $oneOfFields;

        /**
         * XlmjCreateDeskResp _data.
         * @member {"data"|undefined} _data
         * @memberof pb.XlmjCreateDeskResp
         * @instance
         */
        Object.defineProperty(XlmjCreateDeskResp.prototype, "_data", {
            get: $util.oneOfGetter($oneOfFields = ["data"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * Creates a new XlmjCreateDeskResp instance using the specified properties.
         * @function create
         * @memberof pb.XlmjCreateDeskResp
         * @static
         * @param {pb.IXlmjCreateDeskResp=} [properties] Properties to set
         * @returns {pb.XlmjCreateDeskResp} XlmjCreateDeskResp instance
         */
        XlmjCreateDeskResp.create = function create(properties) {
            return new XlmjCreateDeskResp(properties);
        };

        /**
         * Encodes the specified XlmjCreateDeskResp message. Does not implicitly {@link pb.XlmjCreateDeskResp.verify|verify} messages.
         * @function encode
         * @memberof pb.XlmjCreateDeskResp
         * @static
         * @param {pb.IXlmjCreateDeskResp} message XlmjCreateDeskResp message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        XlmjCreateDeskResp.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.code != null && Object.hasOwnProperty.call(message, "code"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.code);
            if (message.data != null && Object.hasOwnProperty.call(message, "data"))
                $root.pb.DeskInfo.encode(message.data, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
            return writer;
        };

        /**
         * Encodes the specified XlmjCreateDeskResp message, length delimited. Does not implicitly {@link pb.XlmjCreateDeskResp.verify|verify} messages.
         * @function encodeDelimited
         * @memberof pb.XlmjCreateDeskResp
         * @static
         * @param {pb.IXlmjCreateDeskResp} message XlmjCreateDeskResp message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        XlmjCreateDeskResp.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a XlmjCreateDeskResp message from the specified reader or buffer.
         * @function decode
         * @memberof pb.XlmjCreateDeskResp
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {pb.XlmjCreateDeskResp} XlmjCreateDeskResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        XlmjCreateDeskResp.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.pb.XlmjCreateDeskResp();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.code = reader.int32();
                        break;
                    }
                case 2: {
                        message.data = $root.pb.DeskInfo.decode(reader, reader.uint32());
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a XlmjCreateDeskResp message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof pb.XlmjCreateDeskResp
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {pb.XlmjCreateDeskResp} XlmjCreateDeskResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        XlmjCreateDeskResp.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a XlmjCreateDeskResp message.
         * @function verify
         * @memberof pb.XlmjCreateDeskResp
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        XlmjCreateDeskResp.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            var properties = {};
            if (message.code != null && message.hasOwnProperty("code"))
                if (!$util.isInteger(message.code))
                    return "code: integer expected";
            if (message.data != null && message.hasOwnProperty("data")) {
                properties._data = 1;
                {
                    var error = $root.pb.DeskInfo.verify(message.data);
                    if (error)
                        return "data." + error;
                }
            }
            return null;
        };

        /**
         * Creates a XlmjCreateDeskResp message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof pb.XlmjCreateDeskResp
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {pb.XlmjCreateDeskResp} XlmjCreateDeskResp
         */
        XlmjCreateDeskResp.fromObject = function fromObject(object) {
            if (object instanceof $root.pb.XlmjCreateDeskResp)
                return object;
            var message = new $root.pb.XlmjCreateDeskResp();
            if (object.code != null)
                message.code = object.code | 0;
            if (object.data != null) {
                if (typeof object.data !== "object")
                    throw TypeError(".pb.XlmjCreateDeskResp.data: object expected");
                message.data = $root.pb.DeskInfo.fromObject(object.data);
            }
            return message;
        };

        /**
         * Creates a plain object from a XlmjCreateDeskResp message. Also converts values to other types if specified.
         * @function toObject
         * @memberof pb.XlmjCreateDeskResp
         * @static
         * @param {pb.XlmjCreateDeskResp} message XlmjCreateDeskResp
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        XlmjCreateDeskResp.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults)
                object.code = 0;
            if (message.code != null && message.hasOwnProperty("code"))
                object.code = message.code;
            if (message.data != null && message.hasOwnProperty("data")) {
                object.data = $root.pb.DeskInfo.toObject(message.data, options);
                if (options.oneofs)
                    object._data = "data";
            }
            return object;
        };

        /**
         * Converts this XlmjCreateDeskResp to JSON.
         * @function toJSON
         * @memberof pb.XlmjCreateDeskResp
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        XlmjCreateDeskResp.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for XlmjCreateDeskResp
         * @function getTypeUrl
         * @memberof pb.XlmjCreateDeskResp
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        XlmjCreateDeskResp.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/pb.XlmjCreateDeskResp";
        };

        return XlmjCreateDeskResp;
    })();

    pb.XlmjDeskExitResp = (function() {

        /**
         * Properties of a XlmjDeskExitResp.
         * @memberof pb
         * @interface IXlmjDeskExitResp
         * @property {number|null} [code] XlmjDeskExitResp code
         */

        /**
         * Constructs a new XlmjDeskExitResp.
         * @memberof pb
         * @classdesc Represents a XlmjDeskExitResp.
         * @implements IXlmjDeskExitResp
         * @constructor
         * @param {pb.IXlmjDeskExitResp=} [properties] Properties to set
         */
        function XlmjDeskExitResp(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * XlmjDeskExitResp code.
         * @member {number} code
         * @memberof pb.XlmjDeskExitResp
         * @instance
         */
        XlmjDeskExitResp.prototype.code = 0;

        /**
         * Creates a new XlmjDeskExitResp instance using the specified properties.
         * @function create
         * @memberof pb.XlmjDeskExitResp
         * @static
         * @param {pb.IXlmjDeskExitResp=} [properties] Properties to set
         * @returns {pb.XlmjDeskExitResp} XlmjDeskExitResp instance
         */
        XlmjDeskExitResp.create = function create(properties) {
            return new XlmjDeskExitResp(properties);
        };

        /**
         * Encodes the specified XlmjDeskExitResp message. Does not implicitly {@link pb.XlmjDeskExitResp.verify|verify} messages.
         * @function encode
         * @memberof pb.XlmjDeskExitResp
         * @static
         * @param {pb.IXlmjDeskExitResp} message XlmjDeskExitResp message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        XlmjDeskExitResp.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.code != null && Object.hasOwnProperty.call(message, "code"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.code);
            return writer;
        };

        /**
         * Encodes the specified XlmjDeskExitResp message, length delimited. Does not implicitly {@link pb.XlmjDeskExitResp.verify|verify} messages.
         * @function encodeDelimited
         * @memberof pb.XlmjDeskExitResp
         * @static
         * @param {pb.IXlmjDeskExitResp} message XlmjDeskExitResp message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        XlmjDeskExitResp.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a XlmjDeskExitResp message from the specified reader or buffer.
         * @function decode
         * @memberof pb.XlmjDeskExitResp
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {pb.XlmjDeskExitResp} XlmjDeskExitResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        XlmjDeskExitResp.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.pb.XlmjDeskExitResp();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.code = reader.int32();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a XlmjDeskExitResp message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof pb.XlmjDeskExitResp
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {pb.XlmjDeskExitResp} XlmjDeskExitResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        XlmjDeskExitResp.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a XlmjDeskExitResp message.
         * @function verify
         * @memberof pb.XlmjDeskExitResp
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        XlmjDeskExitResp.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.code != null && message.hasOwnProperty("code"))
                if (!$util.isInteger(message.code))
                    return "code: integer expected";
            return null;
        };

        /**
         * Creates a XlmjDeskExitResp message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof pb.XlmjDeskExitResp
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {pb.XlmjDeskExitResp} XlmjDeskExitResp
         */
        XlmjDeskExitResp.fromObject = function fromObject(object) {
            if (object instanceof $root.pb.XlmjDeskExitResp)
                return object;
            var message = new $root.pb.XlmjDeskExitResp();
            if (object.code != null)
                message.code = object.code | 0;
            return message;
        };

        /**
         * Creates a plain object from a XlmjDeskExitResp message. Also converts values to other types if specified.
         * @function toObject
         * @memberof pb.XlmjDeskExitResp
         * @static
         * @param {pb.XlmjDeskExitResp} message XlmjDeskExitResp
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        XlmjDeskExitResp.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults)
                object.code = 0;
            if (message.code != null && message.hasOwnProperty("code"))
                object.code = message.code;
            return object;
        };

        /**
         * Converts this XlmjDeskExitResp to JSON.
         * @function toJSON
         * @memberof pb.XlmjDeskExitResp
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        XlmjDeskExitResp.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for XlmjDeskExitResp
         * @function getTypeUrl
         * @memberof pb.XlmjDeskExitResp
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        XlmjDeskExitResp.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/pb.XlmjDeskExitResp";
        };

        return XlmjDeskExitResp;
    })();

    pb.XlmjDissolveResp = (function() {

        /**
         * Properties of a XlmjDissolveResp.
         * @memberof pb
         * @interface IXlmjDissolveResp
         * @property {number|null} [code] XlmjDissolveResp code
         */

        /**
         * Constructs a new XlmjDissolveResp.
         * @memberof pb
         * @classdesc Represents a XlmjDissolveResp.
         * @implements IXlmjDissolveResp
         * @constructor
         * @param {pb.IXlmjDissolveResp=} [properties] Properties to set
         */
        function XlmjDissolveResp(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * XlmjDissolveResp code.
         * @member {number} code
         * @memberof pb.XlmjDissolveResp
         * @instance
         */
        XlmjDissolveResp.prototype.code = 0;

        /**
         * Creates a new XlmjDissolveResp instance using the specified properties.
         * @function create
         * @memberof pb.XlmjDissolveResp
         * @static
         * @param {pb.IXlmjDissolveResp=} [properties] Properties to set
         * @returns {pb.XlmjDissolveResp} XlmjDissolveResp instance
         */
        XlmjDissolveResp.create = function create(properties) {
            return new XlmjDissolveResp(properties);
        };

        /**
         * Encodes the specified XlmjDissolveResp message. Does not implicitly {@link pb.XlmjDissolveResp.verify|verify} messages.
         * @function encode
         * @memberof pb.XlmjDissolveResp
         * @static
         * @param {pb.IXlmjDissolveResp} message XlmjDissolveResp message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        XlmjDissolveResp.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.code != null && Object.hasOwnProperty.call(message, "code"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.code);
            return writer;
        };

        /**
         * Encodes the specified XlmjDissolveResp message, length delimited. Does not implicitly {@link pb.XlmjDissolveResp.verify|verify} messages.
         * @function encodeDelimited
         * @memberof pb.XlmjDissolveResp
         * @static
         * @param {pb.IXlmjDissolveResp} message XlmjDissolveResp message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        XlmjDissolveResp.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a XlmjDissolveResp message from the specified reader or buffer.
         * @function decode
         * @memberof pb.XlmjDissolveResp
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {pb.XlmjDissolveResp} XlmjDissolveResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        XlmjDissolveResp.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.pb.XlmjDissolveResp();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.code = reader.int32();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a XlmjDissolveResp message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof pb.XlmjDissolveResp
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {pb.XlmjDissolveResp} XlmjDissolveResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        XlmjDissolveResp.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a XlmjDissolveResp message.
         * @function verify
         * @memberof pb.XlmjDissolveResp
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        XlmjDissolveResp.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.code != null && message.hasOwnProperty("code"))
                if (!$util.isInteger(message.code))
                    return "code: integer expected";
            return null;
        };

        /**
         * Creates a XlmjDissolveResp message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof pb.XlmjDissolveResp
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {pb.XlmjDissolveResp} XlmjDissolveResp
         */
        XlmjDissolveResp.fromObject = function fromObject(object) {
            if (object instanceof $root.pb.XlmjDissolveResp)
                return object;
            var message = new $root.pb.XlmjDissolveResp();
            if (object.code != null)
                message.code = object.code | 0;
            return message;
        };

        /**
         * Creates a plain object from a XlmjDissolveResp message. Also converts values to other types if specified.
         * @function toObject
         * @memberof pb.XlmjDissolveResp
         * @static
         * @param {pb.XlmjDissolveResp} message XlmjDissolveResp
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        XlmjDissolveResp.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults)
                object.code = 0;
            if (message.code != null && message.hasOwnProperty("code"))
                object.code = message.code;
            return object;
        };

        /**
         * Converts this XlmjDissolveResp to JSON.
         * @function toJSON
         * @memberof pb.XlmjDissolveResp
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        XlmjDissolveResp.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for XlmjDissolveResp
         * @function getTypeUrl
         * @memberof pb.XlmjDissolveResp
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        XlmjDissolveResp.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/pb.XlmjDissolveResp";
        };

        return XlmjDissolveResp;
    })();

    pb.XlmjJoinReq = (function() {

        /**
         * Properties of a XlmjJoinReq.
         * @memberof pb
         * @interface IXlmjJoinReq
         * @property {string|null} [deskNo] XlmjJoinReq deskNo
         */

        /**
         * Constructs a new XlmjJoinReq.
         * @memberof pb
         * @classdesc Represents a XlmjJoinReq.
         * @implements IXlmjJoinReq
         * @constructor
         * @param {pb.IXlmjJoinReq=} [properties] Properties to set
         */
        function XlmjJoinReq(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * XlmjJoinReq deskNo.
         * @member {string} deskNo
         * @memberof pb.XlmjJoinReq
         * @instance
         */
        XlmjJoinReq.prototype.deskNo = "";

        /**
         * Creates a new XlmjJoinReq instance using the specified properties.
         * @function create
         * @memberof pb.XlmjJoinReq
         * @static
         * @param {pb.IXlmjJoinReq=} [properties] Properties to set
         * @returns {pb.XlmjJoinReq} XlmjJoinReq instance
         */
        XlmjJoinReq.create = function create(properties) {
            return new XlmjJoinReq(properties);
        };

        /**
         * Encodes the specified XlmjJoinReq message. Does not implicitly {@link pb.XlmjJoinReq.verify|verify} messages.
         * @function encode
         * @memberof pb.XlmjJoinReq
         * @static
         * @param {pb.IXlmjJoinReq} message XlmjJoinReq message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        XlmjJoinReq.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.deskNo != null && Object.hasOwnProperty.call(message, "deskNo"))
                writer.uint32(/* id 1, wireType 2 =*/10).string(message.deskNo);
            return writer;
        };

        /**
         * Encodes the specified XlmjJoinReq message, length delimited. Does not implicitly {@link pb.XlmjJoinReq.verify|verify} messages.
         * @function encodeDelimited
         * @memberof pb.XlmjJoinReq
         * @static
         * @param {pb.IXlmjJoinReq} message XlmjJoinReq message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        XlmjJoinReq.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a XlmjJoinReq message from the specified reader or buffer.
         * @function decode
         * @memberof pb.XlmjJoinReq
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {pb.XlmjJoinReq} XlmjJoinReq
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        XlmjJoinReq.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.pb.XlmjJoinReq();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.deskNo = reader.string();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a XlmjJoinReq message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof pb.XlmjJoinReq
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {pb.XlmjJoinReq} XlmjJoinReq
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        XlmjJoinReq.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a XlmjJoinReq message.
         * @function verify
         * @memberof pb.XlmjJoinReq
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        XlmjJoinReq.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.deskNo != null && message.hasOwnProperty("deskNo"))
                if (!$util.isString(message.deskNo))
                    return "deskNo: string expected";
            return null;
        };

        /**
         * Creates a XlmjJoinReq message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof pb.XlmjJoinReq
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {pb.XlmjJoinReq} XlmjJoinReq
         */
        XlmjJoinReq.fromObject = function fromObject(object) {
            if (object instanceof $root.pb.XlmjJoinReq)
                return object;
            var message = new $root.pb.XlmjJoinReq();
            if (object.deskNo != null)
                message.deskNo = String(object.deskNo);
            return message;
        };

        /**
         * Creates a plain object from a XlmjJoinReq message. Also converts values to other types if specified.
         * @function toObject
         * @memberof pb.XlmjJoinReq
         * @static
         * @param {pb.XlmjJoinReq} message XlmjJoinReq
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        XlmjJoinReq.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults)
                object.deskNo = "";
            if (message.deskNo != null && message.hasOwnProperty("deskNo"))
                object.deskNo = message.deskNo;
            return object;
        };

        /**
         * Converts this XlmjJoinReq to JSON.
         * @function toJSON
         * @memberof pb.XlmjJoinReq
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        XlmjJoinReq.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for XlmjJoinReq
         * @function getTypeUrl
         * @memberof pb.XlmjJoinReq
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        XlmjJoinReq.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/pb.XlmjJoinReq";
        };

        return XlmjJoinReq;
    })();

    pb.XlmjJoinResp = (function() {

        /**
         * Properties of a XlmjJoinResp.
         * @memberof pb
         * @interface IXlmjJoinResp
         * @property {number|null} [code] XlmjJoinResp code
         */

        /**
         * Constructs a new XlmjJoinResp.
         * @memberof pb
         * @classdesc Represents a XlmjJoinResp.
         * @implements IXlmjJoinResp
         * @constructor
         * @param {pb.IXlmjJoinResp=} [properties] Properties to set
         */
        function XlmjJoinResp(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * XlmjJoinResp code.
         * @member {number} code
         * @memberof pb.XlmjJoinResp
         * @instance
         */
        XlmjJoinResp.prototype.code = 0;

        /**
         * Creates a new XlmjJoinResp instance using the specified properties.
         * @function create
         * @memberof pb.XlmjJoinResp
         * @static
         * @param {pb.IXlmjJoinResp=} [properties] Properties to set
         * @returns {pb.XlmjJoinResp} XlmjJoinResp instance
         */
        XlmjJoinResp.create = function create(properties) {
            return new XlmjJoinResp(properties);
        };

        /**
         * Encodes the specified XlmjJoinResp message. Does not implicitly {@link pb.XlmjJoinResp.verify|verify} messages.
         * @function encode
         * @memberof pb.XlmjJoinResp
         * @static
         * @param {pb.IXlmjJoinResp} message XlmjJoinResp message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        XlmjJoinResp.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.code != null && Object.hasOwnProperty.call(message, "code"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.code);
            return writer;
        };

        /**
         * Encodes the specified XlmjJoinResp message, length delimited. Does not implicitly {@link pb.XlmjJoinResp.verify|verify} messages.
         * @function encodeDelimited
         * @memberof pb.XlmjJoinResp
         * @static
         * @param {pb.IXlmjJoinResp} message XlmjJoinResp message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        XlmjJoinResp.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a XlmjJoinResp message from the specified reader or buffer.
         * @function decode
         * @memberof pb.XlmjJoinResp
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {pb.XlmjJoinResp} XlmjJoinResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        XlmjJoinResp.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.pb.XlmjJoinResp();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.code = reader.int32();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a XlmjJoinResp message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof pb.XlmjJoinResp
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {pb.XlmjJoinResp} XlmjJoinResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        XlmjJoinResp.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a XlmjJoinResp message.
         * @function verify
         * @memberof pb.XlmjJoinResp
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        XlmjJoinResp.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.code != null && message.hasOwnProperty("code"))
                if (!$util.isInteger(message.code))
                    return "code: integer expected";
            return null;
        };

        /**
         * Creates a XlmjJoinResp message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof pb.XlmjJoinResp
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {pb.XlmjJoinResp} XlmjJoinResp
         */
        XlmjJoinResp.fromObject = function fromObject(object) {
            if (object instanceof $root.pb.XlmjJoinResp)
                return object;
            var message = new $root.pb.XlmjJoinResp();
            if (object.code != null)
                message.code = object.code | 0;
            return message;
        };

        /**
         * Creates a plain object from a XlmjJoinResp message. Also converts values to other types if specified.
         * @function toObject
         * @memberof pb.XlmjJoinResp
         * @static
         * @param {pb.XlmjJoinResp} message XlmjJoinResp
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        XlmjJoinResp.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults)
                object.code = 0;
            if (message.code != null && message.hasOwnProperty("code"))
                object.code = message.code;
            return object;
        };

        /**
         * Converts this XlmjJoinResp to JSON.
         * @function toJSON
         * @memberof pb.XlmjJoinResp
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        XlmjJoinResp.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for XlmjJoinResp
         * @function getTypeUrl
         * @memberof pb.XlmjJoinResp
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        XlmjJoinResp.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/pb.XlmjJoinResp";
        };

        return XlmjJoinResp;
    })();

    pb.XlmjReadyReq = (function() {

        /**
         * Properties of a XlmjReadyReq.
         * @memberof pb
         * @interface IXlmjReadyReq
         * @property {boolean|null} [isReady] XlmjReadyReq isReady
         */

        /**
         * Constructs a new XlmjReadyReq.
         * @memberof pb
         * @classdesc Represents a XlmjReadyReq.
         * @implements IXlmjReadyReq
         * @constructor
         * @param {pb.IXlmjReadyReq=} [properties] Properties to set
         */
        function XlmjReadyReq(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * XlmjReadyReq isReady.
         * @member {boolean} isReady
         * @memberof pb.XlmjReadyReq
         * @instance
         */
        XlmjReadyReq.prototype.isReady = false;

        /**
         * Creates a new XlmjReadyReq instance using the specified properties.
         * @function create
         * @memberof pb.XlmjReadyReq
         * @static
         * @param {pb.IXlmjReadyReq=} [properties] Properties to set
         * @returns {pb.XlmjReadyReq} XlmjReadyReq instance
         */
        XlmjReadyReq.create = function create(properties) {
            return new XlmjReadyReq(properties);
        };

        /**
         * Encodes the specified XlmjReadyReq message. Does not implicitly {@link pb.XlmjReadyReq.verify|verify} messages.
         * @function encode
         * @memberof pb.XlmjReadyReq
         * @static
         * @param {pb.IXlmjReadyReq} message XlmjReadyReq message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        XlmjReadyReq.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.isReady != null && Object.hasOwnProperty.call(message, "isReady"))
                writer.uint32(/* id 1, wireType 0 =*/8).bool(message.isReady);
            return writer;
        };

        /**
         * Encodes the specified XlmjReadyReq message, length delimited. Does not implicitly {@link pb.XlmjReadyReq.verify|verify} messages.
         * @function encodeDelimited
         * @memberof pb.XlmjReadyReq
         * @static
         * @param {pb.IXlmjReadyReq} message XlmjReadyReq message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        XlmjReadyReq.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a XlmjReadyReq message from the specified reader or buffer.
         * @function decode
         * @memberof pb.XlmjReadyReq
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {pb.XlmjReadyReq} XlmjReadyReq
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        XlmjReadyReq.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.pb.XlmjReadyReq();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.isReady = reader.bool();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a XlmjReadyReq message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof pb.XlmjReadyReq
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {pb.XlmjReadyReq} XlmjReadyReq
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        XlmjReadyReq.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a XlmjReadyReq message.
         * @function verify
         * @memberof pb.XlmjReadyReq
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        XlmjReadyReq.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.isReady != null && message.hasOwnProperty("isReady"))
                if (typeof message.isReady !== "boolean")
                    return "isReady: boolean expected";
            return null;
        };

        /**
         * Creates a XlmjReadyReq message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof pb.XlmjReadyReq
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {pb.XlmjReadyReq} XlmjReadyReq
         */
        XlmjReadyReq.fromObject = function fromObject(object) {
            if (object instanceof $root.pb.XlmjReadyReq)
                return object;
            var message = new $root.pb.XlmjReadyReq();
            if (object.isReady != null)
                message.isReady = Boolean(object.isReady);
            return message;
        };

        /**
         * Creates a plain object from a XlmjReadyReq message. Also converts values to other types if specified.
         * @function toObject
         * @memberof pb.XlmjReadyReq
         * @static
         * @param {pb.XlmjReadyReq} message XlmjReadyReq
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        XlmjReadyReq.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults)
                object.isReady = false;
            if (message.isReady != null && message.hasOwnProperty("isReady"))
                object.isReady = message.isReady;
            return object;
        };

        /**
         * Converts this XlmjReadyReq to JSON.
         * @function toJSON
         * @memberof pb.XlmjReadyReq
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        XlmjReadyReq.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for XlmjReadyReq
         * @function getTypeUrl
         * @memberof pb.XlmjReadyReq
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        XlmjReadyReq.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/pb.XlmjReadyReq";
        };

        return XlmjReadyReq;
    })();

    pb.XlmjReadyResp = (function() {

        /**
         * Properties of a XlmjReadyResp.
         * @memberof pb
         * @interface IXlmjReadyResp
         * @property {number|null} [code] XlmjReadyResp code
         */

        /**
         * Constructs a new XlmjReadyResp.
         * @memberof pb
         * @classdesc Represents a XlmjReadyResp.
         * @implements IXlmjReadyResp
         * @constructor
         * @param {pb.IXlmjReadyResp=} [properties] Properties to set
         */
        function XlmjReadyResp(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * XlmjReadyResp code.
         * @member {number} code
         * @memberof pb.XlmjReadyResp
         * @instance
         */
        XlmjReadyResp.prototype.code = 0;

        /**
         * Creates a new XlmjReadyResp instance using the specified properties.
         * @function create
         * @memberof pb.XlmjReadyResp
         * @static
         * @param {pb.IXlmjReadyResp=} [properties] Properties to set
         * @returns {pb.XlmjReadyResp} XlmjReadyResp instance
         */
        XlmjReadyResp.create = function create(properties) {
            return new XlmjReadyResp(properties);
        };

        /**
         * Encodes the specified XlmjReadyResp message. Does not implicitly {@link pb.XlmjReadyResp.verify|verify} messages.
         * @function encode
         * @memberof pb.XlmjReadyResp
         * @static
         * @param {pb.IXlmjReadyResp} message XlmjReadyResp message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        XlmjReadyResp.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.code != null && Object.hasOwnProperty.call(message, "code"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.code);
            return writer;
        };

        /**
         * Encodes the specified XlmjReadyResp message, length delimited. Does not implicitly {@link pb.XlmjReadyResp.verify|verify} messages.
         * @function encodeDelimited
         * @memberof pb.XlmjReadyResp
         * @static
         * @param {pb.IXlmjReadyResp} message XlmjReadyResp message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        XlmjReadyResp.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a XlmjReadyResp message from the specified reader or buffer.
         * @function decode
         * @memberof pb.XlmjReadyResp
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {pb.XlmjReadyResp} XlmjReadyResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        XlmjReadyResp.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.pb.XlmjReadyResp();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.code = reader.int32();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a XlmjReadyResp message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof pb.XlmjReadyResp
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {pb.XlmjReadyResp} XlmjReadyResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        XlmjReadyResp.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a XlmjReadyResp message.
         * @function verify
         * @memberof pb.XlmjReadyResp
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        XlmjReadyResp.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.code != null && message.hasOwnProperty("code"))
                if (!$util.isInteger(message.code))
                    return "code: integer expected";
            return null;
        };

        /**
         * Creates a XlmjReadyResp message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof pb.XlmjReadyResp
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {pb.XlmjReadyResp} XlmjReadyResp
         */
        XlmjReadyResp.fromObject = function fromObject(object) {
            if (object instanceof $root.pb.XlmjReadyResp)
                return object;
            var message = new $root.pb.XlmjReadyResp();
            if (object.code != null)
                message.code = object.code | 0;
            return message;
        };

        /**
         * Creates a plain object from a XlmjReadyResp message. Also converts values to other types if specified.
         * @function toObject
         * @memberof pb.XlmjReadyResp
         * @static
         * @param {pb.XlmjReadyResp} message XlmjReadyResp
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        XlmjReadyResp.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults)
                object.code = 0;
            if (message.code != null && message.hasOwnProperty("code"))
                object.code = message.code;
            return object;
        };

        /**
         * Converts this XlmjReadyResp to JSON.
         * @function toJSON
         * @memberof pb.XlmjReadyResp
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        XlmjReadyResp.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for XlmjReadyResp
         * @function getTypeUrl
         * @memberof pb.XlmjReadyResp
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        XlmjReadyResp.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/pb.XlmjReadyResp";
        };

        return XlmjReadyResp;
    })();

    return pb;
})();

module.exports = $root;
